home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / program / mui32dev.lha / MUI / Developer / Modula / txt / MuiClasses.def next >
Text File  |  1996-01-23  |  48KB  |  1,103 lines

  1. DEFINITION MODULE MuiClasses;
  2.  
  3. (***************************************************************************
  4. **
  5. ** $VER: MuiClasses.def 3.2 (23.1.96)
  6. **
  7. ** The following updates have been done by
  8. **
  9. **   Olaf "Olf" Peters <olf@informatik.uni-bremen.de>
  10. **
  11. ** $HISTORY:
  12. **
  13. **  23.1.96  3.2   : updated for MUI 3.2 release
  14. ** 18.11.95  3.1   : updated for MUI v3.1 release
  15. **
  16. ***************************************************************************)
  17.  
  18. (*************************************************************************
  19. ** Structures and Macros for creating MUI custom classes.
  20. **
  21. ** converted for M2 by Christian 'Kochtopf' Scholz
  22. **
  23. **************************************************************************
  24. **
  25. ** $Id: MuiClasses.def 1.6 1995/12/15 16:37:53 olf Exp olf $
  26. **
  27. ** /// "$Log: MuiClasses.def $
  28. # Revision 1.6  1995/12/15  16:37:53  olf
  29. # - applied changes from Stefan Schulz
  30. # - cleanup of IMPORT section
  31. #"
  32. # Revision 1.5  1995/11/18  16:46:18  olf
  33. # MUI Release 3.1
  34. #
  35. # Revision 1.4  1995/11/02  20:02:47  olf
  36. # updated to muimaster 11.3283
  37. #
  38. # Revision 1.3  1995/10/23  17:59:16  olf
  39. # *** empty log message ***
  40. #
  41. # Revision 1.2  1995/10/23  17:06:34  olf
  42. # *** empty log message ***
  43. #
  44. # Revision 1.1  1995/09/25  15:32:52  olf
  45. # Initial revision
  46. #
  47. # Revision 1.8  1994/08/16  20:24:55  Kochtopf
  48. # mCustumClassPtr hinzugefügt
  49. # mCustomClass nach M2-Standard umbenannt
  50. #
  51. # Revision 1.7  1994/08/16  19:41:22  Kochtopf
  52. # added MUIKEYPOPUP
  53. #
  54. # Revision 1.6  1994/06/30  21:03:01  Kochtopf
  55. # changed again SHORTINT to SHORTCARD for madAddLeft, etc.
  56. #
  57. # Revision 1.5  1994/06/30  20:56:40  Kochtopf
  58. # Typ bei madAddLeft, etc. von BYTE in SHORTINT geändert, um
  59. # besser damit rechnen zu können.
  60. #
  61. # Revision 1.4  1994/06/27  22:04:58  Kochtopf
  62. # changed name from MUIClasses to MuiClasses
  63. # added definition of mCustomClass
  64. #
  65. # Revision 1.3  1994/06/23  21:36:53  Kochtopf
  66. # upgraded to MUI 2.1
  67. # added mCustumClass-Definition
  68. #
  69. # Revision 1.2  1994/02/19  12:42:19  Kochtopf
  70. # Neue Prozeduren hinzugefuegt, die in mui.h definiert waren.
  71. # Ausserdem etwas die Reihenfolge geaendert, so dass man jetzt alles
  72. # benutzen koennen sollte.
  73. #
  74. # Revision 1.1  1994/02/02  09:37:18  Kochtopf
  75. # Initial revision
  76. #
  77. **\\\
  78. **************************************************************************)
  79.  
  80. FROM SYSTEM     IMPORT  ADDRESS, WORD, BYTE, LONGSET;
  81. FROM IFFParseD  IMPORT  IFFHandlePtr;
  82. FROM MuiD       IMPORT  mInputHandlerNodePtr, mListTestPosResultPtr, APTR ;
  83.  
  84. IMPORT
  85.   ed : ExecD,
  86.   gd : GraphicsD,
  87.   id : IntuitionD,
  88.   R,
  89.   ud : UtilityD ;
  90.  
  91. TYPE
  92.   StrPtr = POINTER TO ARRAY [0..MAX(LONGINT)-1] OF CHAR ;
  93.  
  94. (*
  95. ** at the beginning some general things used for BOOPSI-Objects
  96. *)
  97.  
  98. (* get a pointer to our instance data *)
  99.  
  100. PROCEDURE InstData(cl : id.IClassPtr; obj : id.ObjectPtr) : ADDRESS;
  101.  
  102. (* get the size ... *)
  103.  
  104. PROCEDURE InstSize(cl : id.IClassPtr) : CARDINAL;
  105.  
  106.  
  107. (*
  108. ** now the things concerning MUI's view of the things
  109. **
  110. ** GENERAL NOTES:
  111. **
  112. ** - Everything described in this defintion file is only valid within
  113. **   MUI classes. You may never use any of these things out of
  114. **   a class, e.g. in a traditional MUI application.
  115. **
  116. ** - Except when otherwise stated, all structures are strictly read only.
  117. *)
  118.  
  119. (* Pointer-Types *)
  120.  
  121. TYPE mGlobalInfoPtr     = POINTER TO mGlobalInfo;
  122.      mMinMaxPtr         = POINTER TO mMinMax;
  123.      mNotifyDataPtr     = POINTER TO mNotifyData;
  124.      mAreaDataPtr       = POINTER TO mAreaData;
  125.      mRenderInfoPtr     = POINTER TO mRenderInfo;
  126.      mConfigurationPtr  = ADDRESS;
  127.      WORDPtr            = POINTER TO WORD;
  128.      mCustomClassPtr    = POINTER TO mCustomClass;
  129.  
  130.  
  131. (* 
  132. ** Definitions for madFlags 
  133. ** (you will get these flags e.g. with a Draw-Method.)
  134. *)
  135.  
  136. TYPE  MADFlags = (drawObject, (* completely redraw yourself *)
  137.                   drawUpdate, (* only update! *)
  138.                   p2, p3, p4, p5, p6, p7, p8, p9, p10, p11,
  139.                   p12, p13, p14, p15, p16, p17, p18, p19, p20, p21,
  140.                   p22, p23, p24, p25, p26, p27, p28, p29, p30, p31
  141.                   (* rest is private, but must be specified to get a LONGSET *)
  142.                  );
  143.  
  144.       MADFlagSet = SET OF MADFlags;
  145.  
  146.  
  147. (* 
  148. ** Type definitions of some important Methods
  149. ** You will need them in your own classes.
  150. *)
  151.  
  152. (*/// "Notify"
  153. *)
  154.  
  155.         mpCallHookPtr          = POINTER TO mpCallHook;
  156.         mpCallHook             = RECORD
  157.                                  methodID  : LONGINT;
  158.                                  hook      : ud.HookPtr;
  159.                                  param1    : LONGINT;
  160.                                  (* ... *)
  161.                                END;
  162.         mpExportPtr            = POINTER TO mpExport ;
  163.         mpExport               = RECORD
  164.                                  methodID : LONGINT ;
  165.                                  datapase : id.ObjectPtr ;
  166.                                END;
  167.         mpFindUDataPtr         = POINTER TO mpFindUData;
  168.         mpFindUData            = RECORD
  169.                                  methodID  : LONGINT;
  170.                                  data      : LONGINT;
  171.                                END;
  172.         mpGetUDataPtr          = POINTER TO mpGetUData;
  173.         mpGetUData             = RECORD
  174.                                  methodID  : LONGINT;
  175.                                  udata     : LONGINT;
  176.                                  attr      : LONGINT;
  177.                                  storage   : APTR;
  178.                                END;
  179.         mpImportPtr            = POINTER TO mpImport ;
  180.         mpImport               = RECORD
  181.                                  methodID : LONGINT ;
  182.                                  datapase : id.ObjectPtr ;
  183.                                END;
  184.         mpKillNotifyPtr        = POINTER TO mpKillNotify;
  185.         mpKillNotify           = RECORD
  186.                                  methodID  : LONGINT;
  187.                                  trigAttr  : LONGINT;
  188.                                END;
  189.         mpMultiSetPtr          = POINTER TO mpMultiSet;
  190.         mpMultiSet             = RECORD
  191.                                  methodID  : LONGINT;
  192.                                  attr      : LONGINT;
  193.                                  val       : LONGINT;
  194.                                  obj       : APTR;
  195.                                  (* ... *)
  196.                                END;
  197.         mpNoNotifySetPtr       = POINTER TO mpNoNotifySet;
  198.         mpNoNotifySet          = RECORD
  199.                                  methodID  : LONGINT;
  200.                                  attr      : LONGINT;
  201.                                  format    : StrPtr;
  202.                                  val       : LONGINT;
  203.                                  (* ... *)
  204.                                END;
  205.         mpNotifyPtr            = POINTER TO mpNotify;
  206.         mpNotify               = RECORD
  207.                                  methodID  : LONGINT;
  208.                                  trigAttr  : LONGINT;
  209.                                  trigVal   : LONGINT;
  210.                                  destObj   : APTR;
  211.                                  followParams:LONGINT;
  212.                                  (* ... *)
  213.                                END;
  214.         mpSetPtr               = POINTER TO mpSet;
  215.         mpSet                  = RECORD
  216.                                  methodID  : LONGINT;
  217.                                  attr      : LONGINT;
  218.                                  val       : LONGINT;
  219.                                END;
  220.         mpSetAsStringPtr       = POINTER TO mpSetAsString;
  221.         mpSetAsString          = RECORD
  222.                                  methodID  : LONGINT;
  223.                                  attr      : LONGINT;
  224.                                  format    : StrPtr;
  225.                                  val       : LONGINT;
  226.                                  (* ... *)
  227.                                END;
  228.         mpSetUDataPtr          = POINTER TO mpSetUData;
  229.         mpSetUData             = RECORD
  230.                                  methodID  : LONGINT;
  231.                                  udata     : LONGINT;
  232.                                  attr      : LONGINT;
  233.                                  val       : LONGINT;
  234.                                END;
  235.         mpSetUDataOncePtr      = POINTER TO mpSetUDataOnce ;
  236.         mpSetUDataOnce         = RECORD
  237.                                  methodID  : LONGINT ;
  238.                                  udata     : LONGINT ;
  239.                                  attr      : LONGINT ;
  240.                                  val       : LONGINT ;
  241.                                END ;
  242.         mpWriteLongPtr         = POINTER TO mpWriteLong;
  243.         mpWriteLong            = RECORD
  244.                                  methodID  : LONGINT;
  245.                                  val       : LONGINT;
  246.                                  memory    : APTR;
  247.                                END;
  248.         mpWriteStringPtr       = POINTER TO mpWriteString;
  249.         mpWriteString          = RECORD
  250.                                  methodID  : LONGINT;
  251.                                  str       : StrPtr;
  252.                                  memory    : APTR;
  253.                                END;
  254.  
  255. (*\\\*)
  256. (*/// "Family"
  257. *)
  258.  
  259.         mpFamilyAddHeadPtr     = POINTER TO mpFamilyAddHead;
  260.         mpFamilyAddHead        = RECORD
  261.                                  methodID  : LONGINT;
  262.                                  obj       : id.ObjectPtr;
  263.                                END;
  264.         mpFamilyAddTailPtr     = POINTER TO mpFamilyAddTail;
  265.         mpFamilyAddTail        = RECORD
  266.                                  methodID  : LONGINT;
  267.                                  obj       : id.ObjectPtr;
  268.                                END;
  269.         mpFamilyInsertPtr      = POINTER TO mpFamilyInsert;
  270.         mpFamilyInsert         = RECORD
  271.                                  methodID  : LONGINT;
  272.                                  obj       : id.ObjectPtr;
  273.                                  pred      : id.ObjectPtr;
  274.                                END;
  275.         mpFamilyRemovePtr      = POINTER TO mpFamilyRemove;
  276.         mpFamilyRemove         = RECORD
  277.                                  methodID  : LONGINT;
  278.                                  obj       : id.ObjectPtr;
  279.                                END;
  280.         mpFamilySortPtr        = POINTER TO mpFamilySort;
  281.         mpFamilySort           = RECORD
  282.                                  methodID  : LONGINT;
  283.                               (* obj       : ARRAY OF ObjectPtr ; *)
  284.                                END;
  285.         mpFamilyTransferPtr    = POINTER TO mpFamilyTransfer;
  286.         mpFamilyTransfer       = RECORD
  287.                                  methodID  : LONGINT;
  288.                                  family    : id.ObjectPtr;
  289.                                END;
  290.  
  291. (*\\\*)
  292. (*/// "Application"
  293. *)
  294.  
  295.         mpApplicationAddInputHandlerPtr    = POINTER TO mpApplicationAddInputHandler;
  296.         mpApplicationAddInputHandler       = RECORD
  297.                                              methodID  : LONGINT;
  298.                                              ihnode    : mInputHandlerNodePtr;
  299.                                            END;
  300.         mpApplicationCheckRefreshPtr       = POINTER TO mpApplicationCheckRefresh;
  301.         mpApplicationCheckRefresh          = RECORD
  302.                                             methodID   : LONGINT;
  303.                                            END;
  304.         mpApplicationGetMenuCheckPtr       = POINTER TO mpApplicationGetMenuCheck;
  305.         mpApplicationGetMenuCheck          = RECORD
  306.                                              methodID  : LONGINT;
  307.                                              menuId    : LONGINT;
  308.                                            END;
  309.         mpApplicationGetMenuStatePtr       = POINTER TO mpApplicationGetMenuState;
  310.         mpApplicationGetMenuState          = RECORD
  311.                                              methodID  : LONGINT;
  312.                                              menuId    : LONGINT;
  313.                                            END;
  314.         mpApplicationInputPtr  = POINTER TO mpApplicationInput;
  315.         mpApplicationInput                 = RECORD
  316.                                              methodID  : LONGINT;
  317.                                              signal    : POINTER TO LONGSET ;
  318.                                            END;
  319.         mpApplicationInputBufferedPtr      = POINTER TO mpApplicationInputBuffered;
  320.         mpApplicationInputBuffered         = RECORD
  321.                                              methodID  : LONGINT;
  322.                                            END;
  323.         mpApplicationLoadPtr   = POINTER TO mpApplicationLoad;
  324.         mpApplicationLoad                  = RECORD
  325.                                              methodID  : LONGINT;
  326.                                              name      : StrPtr;
  327.                                            END;
  328.         mpApplicationOpenConfigWindowPtr   = POINTER TO mpApplicationOpenConfigWindow;
  329.         mpApplicationOpenConfigWindow      = RECORD
  330.                                              methodID  : LONGINT;
  331.                                              flags     : LONGINT;
  332.                                            END;
  333.         mpApplicationNewInputPtr           = POINTER TO mpApplicationNewInput;
  334.         mpApplicationNewInput              = RECORD
  335.                                              methodID  : LONGINT ;
  336.                                              signal    : POINTER TO LONGSET ;
  337.                                            END;
  338.         mpApplicationPushMethodPtr         = POINTER TO mpApplicationPushMethod;
  339.         mpApplicationPushMethod            = RECORD
  340.                                              methodID  : LONGINT;
  341.                                              dest      : id.ObjectPtr;
  342.                                              count     : LONGINT;
  343.                                              (* ... *)
  344.                                            END;
  345.         mpApplicationRemInputHandlerPtr    = POINTER TO mpApplicationRemInputHandler;
  346.         mpApplicationRemInputHandler       = RECORD
  347.                                              methodID  : LONGINT;
  348.                                              ihnode    : mInputHandlerNodePtr;
  349.                                            END;
  350.         mpApplicationReturnIDPtr           = POINTER TO mpApplicationReturnID;
  351.         mpApplicationReturnID              = RECORD
  352.                                              methodID  : LONGINT;
  353.                                              retid     : LONGINT;
  354.                                            END;
  355.         mpApplicationSavePtr               = POINTER TO mpApplicationSave;
  356.         mpApplicationSave                  = RECORD
  357.                                              methodID  : LONGINT;
  358.                                              name      : StrPtr;
  359.                                            END;
  360.         mpApplicationSetConfigItemPtr      = POINTER TO mpApplicationSetConfigItem;
  361.         mpApplicationSetConfigItem         = RECORD
  362.                                              methodID  : LONGINT;
  363.                                              item      : LONGINT;
  364.                                              data      : APTR;
  365.                                            END;
  366.         mpApplicationSetMenuCheckPtr       = POINTER TO mpApplicationSetMenuCheck;
  367.         mpApplicationSetMenuCheck          = RECORD
  368.                                              methodID  : LONGINT;
  369.                                              menuId    : LONGINT;
  370.                                              stat      : LONGINT;
  371.                                            END;
  372.         mpApplicationSetMenuStatePtr       = POINTER TO mpApplicationSetMenuState;
  373.         mpApplicationSetMenuState          = RECORD
  374.                                              methodID  : LONGINT;
  375.                                              menuId    : LONGINT;
  376.                                              stat      : LONGINT;
  377.                                            END;
  378.         mpApplicationShowHelpPtr           = POINTER TO mpApplicationShowHelp;
  379.         mpApplicationShowHelp              = RECORD
  380.                                              methodID  : LONGINT;
  381.                                              window    : id.ObjectPtr;
  382.                                              name      : StrPtr;
  383.                                              node      : StrPtr;
  384.                                              line      : LONGINT;
  385.                                            END;
  386.  
  387. (*\\\*)
  388. (*/// "Window"
  389. *)
  390.  
  391.         mpWindowGetMenuCheckPtr            = POINTER TO mpWindowGetMenuCheck;
  392.         mpWindowGetMenuCheck   = RECORD
  393.                                  methodID  : LONGINT;
  394.                                  menuId    : LONGINT;
  395.                                END;
  396.         mpWindowGetMenuStatePtr            = POINTER TO mpWindowGetMenuState;
  397.         mpWindowGetMenuState   = RECORD
  398.                                  methodID  : LONGINT;
  399.                                  menuId    : LONGINT;
  400.                                END;
  401.         mpWindowScreenToBackPtr            = POINTER TO mpWindowScreenToBack;
  402.         mpWindowScreenToBack   = RECORD
  403.                                  methodID  : LONGINT;
  404.                                END;
  405.         mpWindowScreenToFrontPtr           = POINTER TO mpWindowScreenToFront;
  406.         mpWindowScreenToFront  = RECORD
  407.                                  methodID  : LONGINT;
  408.                                END;
  409.         mpWindowSetCycleChainPtr           = POINTER TO mpWindowSetCycleChain;
  410.         mpWindowSetCycleChain  = RECORD
  411.                                  methodID  : LONGINT;
  412.                               (* obj       : ARRAY OF ObjectPtr; *)
  413.                                END;
  414.         mpWindowSetMenuCheckPtr            = POINTER TO mpWindowSetMenuCheck;
  415.         mpWindowSetMenuCheck   = RECORD
  416.                                  methodID  : LONGINT;
  417.                                  menuId    : LONGINT;
  418.                                  stat      : LONGINT;
  419.                                END;
  420.         mpWindowSetMenuStatePtr            = POINTER TO mpWindowSetMenuState;
  421.         mpWindowSetMenuState   = RECORD
  422.                                  methodID  : LONGINT;
  423.                                  menuId    : LONGINT;
  424.                                  stat      : LONGINT;
  425.                                END;
  426.         mpWindowToBackPtr      = POINTER TO mpWindowToBack;
  427.         mpWindowToBack         = RECORD
  428.                                  methodID  : LONGINT;
  429.                                END;
  430.         mpWindowToFrontPtr     = POINTER TO mpWindowToFront;
  431.         mpWindowToFront        = RECORD
  432.                                  methodID  : LONGINT;
  433.                                END;
  434.  
  435. (*\\\*)
  436. (*/// Area
  437. *)
  438.  
  439.         mpAskMinMaxPtr         = POINTER TO mpAskMinMax;
  440.         mpAskMinMax            = RECORD
  441.                                  methodID  : LONGINT;
  442.                                  MinMaxInfo: mMinMaxPtr ;
  443.                                END; (* Custom Class *)
  444.  
  445.         mpCleanupPtr           = POINTER TO mpCleanup;
  446.         mpCleanup              = RECORD
  447.                                  methodID  : LONGINT;
  448.                                END; (* Custom Class *)
  449.  
  450.         mpContextMenuBuildPtr  = POINTER TO mpContextMenuBuild;
  451.         mpContextMenuBuild     = RECORD
  452.                                  methodID : LONGINT;
  453.                                  mx,
  454.                                  my       : LONGINT;
  455.                                END;
  456.         mpContextMenuChoicePtr = POINTER TO mpContextMenuChoice;
  457.         mpContextMenuChoice    = RECORD
  458.                                  methodID : LONGINT;
  459.                                  item     : id.ObjectPtr;
  460.                                END;
  461.         mpDragBeginPtr         = POINTER TO mpDragBegin;
  462.         mpDragBegin            = RECORD
  463.                                  methodID : LONGINT;
  464.                                  obj      : id.ObjectPtr;
  465.                                END;
  466.         mpDragDropPtr          = POINTER TO mpDragDrop;
  467.         mpDragDrop             = RECORD
  468.                                  methodID : LONGINT;
  469.                                  obj      : id.ObjectPtr;
  470.                                  x,
  471.                                  y        : LONGINT;
  472.                                END;
  473.         mpDragFinishPtr        = POINTER TO mpDragFinish;
  474.         mpDragFinish           = RECORD
  475.                                  methodID : LONGINT;
  476.                                  obj      : id.ObjectPtr;
  477.                                END;
  478.         mpDragQueryPtr         = POINTER TO mpDragQuery;
  479.         mpDragQuery            = RECORD
  480.                                  methodID : LONGINT;
  481.                                  obj      : id.ObjectPtr;
  482.                                END;
  483.         mpDragReportPtr        = POINTER TO mpDragReport;
  484.         mpDragReport           = RECORD
  485.                                  methodID : LONGINT;
  486.                                  obj      : id.ObjectPtr;
  487.                                  x,
  488.                                  y,
  489.                                  update   : LONGINT;
  490.                                END;
  491.  
  492.         mpDrawPtr              = POINTER TO mpDraw;
  493.         mpDraw                 = RECORD
  494.                                  methodID  : LONGINT;
  495.                                  flags     : MADFlagSet;
  496.                                END; (* Custom Class *)
  497.  
  498.         mpHandleInputPtr       = POINTER TO mpHandleInput;
  499.         mpHandleInput          = RECORD
  500.                                  methodID  : LONGINT;
  501.                                  imsg      : id.IntuiMessagePtr;
  502.                                  muikey    : LONGINT;
  503.                                END; (* Custom Class *)
  504.  
  505.         mpHidePtr              = POINTER TO mpHide;
  506.         mpHide                 = RECORD
  507.                                  methodID  : LONGINT;
  508.                                END; (* Custom Class *)
  509.  
  510.         mpSetupPtr             = POINTER TO mpSetup;
  511.         mpSetup                = RECORD
  512.                                  methodID  : LONGINT;
  513.                                  renderInfo: mRenderInfoPtr;
  514.                                END; (* Custom Class *)
  515.  
  516.         mpShowPtr              = POINTER TO mpShow;
  517.         mpShow                 = RECORD
  518.                                  methodID  : LONGINT;
  519.                                END; (* Custom Class *)
  520.  
  521. (*\\\*)
  522. (*/// "List"
  523. *)
  524.  
  525.         mpListClearPtr         = POINTER TO mpListClear;
  526.         mpListClear            = RECORD
  527.                                  methodID  : LONGINT;
  528.                                END;
  529.  
  530.         mpListCreateImagePtr   = POINTER TO mpListCreateImage ;
  531.         mpListCreateImage      = RECORD
  532.                                  methodID  : LONGINT ;
  533.                                  obj       : id.ObjectPtr ;
  534.                                  flags     : LONGINT ;
  535.                                END ;
  536.         mpListDeleteImagePtr   = POINTER TO mpListDeleteImage ;
  537.         mpListDeleteImage      = RECORD
  538.                                  methodID  : LONGINT ;
  539.                                  listimg   : APTR ;
  540.                                END ;
  541.         mpListExchangePtr      = POINTER TO mpListExchange;
  542.         mpListExchange         = RECORD
  543.                                  methodID  : LONGINT;
  544.                                  pos1      : LONGINT;
  545.                                  pos2      : LONGINT;
  546.                                END;
  547.         mpListGetEntryPtr      = POINTER TO mpListGetEntry;
  548.         mpListGetEntry         = RECORD
  549.                                  methodID  : LONGINT;
  550.                                  pos       : LONGINT;
  551.                                  entry     : POINTER TO APTR;
  552.                                END;
  553.         mpListInsertPtr        = POINTER TO mpListInsert;
  554.         mpListInsert           = RECORD
  555.                                  methodID  : LONGINT;
  556.                                  entries   : POINTER TO APTR;
  557.                                  count     : LONGINT;
  558.                                  pos       : LONGINT;
  559.                                END;
  560.         mpListInsertSinglePtr  = POINTER TO mpListInsertSingle;
  561.         mpListInsertSingle     = RECORD
  562.                                  methodID  : LONGINT;
  563.                                  entry     : APTR;
  564.                                  pos       : LONGINT;
  565.                                END;
  566.         mpListJumpPtr          = POINTER TO mpListJump;
  567.         mpListJump             = RECORD
  568.                                  methodID  : LONGINT;
  569.                                  pos       : LONGINT;
  570.                                END;
  571.         mpListMovePtr          = POINTER TO mpListMove;
  572.         mpListMove             = RECORD
  573.                                  methodID  : LONGINT;
  574.                                  from      : LONGINT;
  575.                                  to        : LONGINT;
  576.                                END;
  577.         mpListNextSelectedPtr  = POINTER TO mpListNextSelected;
  578.         mpListNextSelected     = RECORD
  579.                                  methodID  : LONGINT;
  580.                                  pos       : APTR;
  581.                                END;
  582.         mpListRedrawPtr        = POINTER TO mpListRedraw;
  583.         mpListRedraw           = RECORD
  584.                                  methodID  : LONGINT;
  585.                                  pos       : LONGINT;
  586.                                END;
  587.         mpListRemovePtr        = POINTER TO mpListRemove;
  588.         mpListRemove           = RECORD
  589.                                  methodID  : LONGINT;
  590.                                  pos       : LONGINT;
  591.                                END;
  592.         mpListSelectPtr        = POINTER TO mpListSelect;
  593.         mpListSelect           = RECORD
  594.                                  methodID  : LONGINT;
  595.                                  pos       : LONGINT;
  596.                                  seltype   : LONGINT;
  597.                                  state     : APTR;
  598.                                END;
  599.         mpListSortPtr          = POINTER TO mpListSort;
  600.         mpListSort             = RECORD
  601.                                  methodID  : LONGINT;
  602.                                END;
  603.  
  604.         mpListTestPosPtr       = POINTER TO mpListTestPos;
  605.         mpListTestPos          = RECORD
  606.                                  methodID : LONGINT;
  607.                                  x,
  608.                                  y        : LONGINT;
  609.                                  res      : mListTestPosResultPtr ;
  610.                                END;
  611.  
  612. (*\\\*)
  613. (*/// "Dirlist"
  614. *)
  615.  
  616.         mpDirlistReReadPtr     = POINTER TO mpDirlistReRead;
  617.         mpDirlistReRead        = RECORD
  618.                                  methodID  : LONGINT;
  619.                                END;
  620.  
  621. (*\\\*)
  622. (*/// "Numeric"
  623. *)
  624.  
  625.         mpNumericDecreasePtr   = POINTER TO mpNumericDecrease;
  626.         mpNumericDecrease      = RECORD
  627.                                  methodID  : LONGINT;
  628.                                  amount    : LONGINT;
  629.                                END;
  630.         mpNumericIncreasePtr   = POINTER TO mpNumericIncrease;
  631.         mpNumericIncrease      = RECORD
  632.                                  methodID  : LONGINT;
  633.                                  amount    : LONGINT;
  634.                                END;
  635.         mpNumericScaleToValuePtr           = POINTER TO mpNumericScaleToValue;
  636.         mpNumericScaleToValue  = RECORD
  637.                                  methodID  : LONGINT;
  638.                                  scalemin  : LONGINT;
  639.                                  scalemax  : LONGINT;
  640.                                  scale     : LONGINT;
  641.                                END;
  642.         mpNumericSetDefaultPtr = POINTER TO mpNumericSetDefault;
  643.         mpNumericSetDefault    = RECORD
  644.                                  methodID  : LONGINT;
  645.                                END;
  646.         mpNumericStringifyPtr  = POINTER TO mpNumericStringify;
  647.         mpNumericStringify     = RECORD
  648.                                  methodID  : LONGINT;
  649.                                  value     : LONGINT;
  650.                                END;
  651.         mpNumericValueToScalePtr           = POINTER TO mpNumericValueToScale;
  652.         mpNumericValueToScale  = RECORD
  653.                                  methodID  : LONGINT;
  654.                                  scalemin  : LONGINT;
  655.                                  scalemax  : LONGINT;
  656.                                END;
  657.  
  658. (*\\\*)
  659. (*/// "Pendisplay"
  660. *)
  661.         mpPendisplaySetColormapPtr = POINTER TO mpPendisplaySetColormap ;
  662.         mpPendisplaySetColormap    = RECORD
  663.                                      methodID : LONGINT ;
  664.                                      colormap : LONGCARD ;
  665.                                    END ;
  666.         mpPendisplaySetMUIPenPtr   = POINTER TO mpPendisplaySetMUIPen ;
  667.         mpPendisplaySetMUIPen      = RECORD
  668.                                        methodID : LONGINT ;
  669.                                        muipen   : LONGCARD ;
  670.                                      END ;
  671.         mpPendisplaySetRGBPtr      = POINTER TO mpPendisplaySetRGB ;
  672.         mpPendisplaySetRGB         = RECORD
  673.                                        methodID : LONGINT ;
  674.                                        red,
  675.                                        green,
  676.                                        blue     : LONGCARD ;
  677.                                      END ;
  678. (*\\\*)
  679. (*/// "Group"
  680. *)
  681.  
  682.         mpGroupExitChangePtr   = POINTER TO mpGroupExitChange;
  683.         mpGroupExitChange      = RECORD
  684.                                  methodID  : LONGINT;
  685.                                END;
  686.         mpGroupInitChangePtr   = POINTER TO mpGroupInitChange;
  687.         mpGroupInitChange      = RECORD
  688.                                  methodID  : LONGINT;
  689.                                END;
  690.  
  691. (*\\\*)
  692. (*/// "Popstring"
  693. *)
  694.  
  695.         mpPopstringClosePtr    = POINTER TO mpPopstringClose;
  696.         mpPopstringClose       = RECORD
  697.                                  methodID  : LONGINT;
  698.                                  result    : LONGINT;
  699.                                END;
  700.         mpPopstringOpenPtr     = POINTER TO mpPopstringOpen;
  701.         mpPopstringOpen        = RECORD
  702.                                  methodID  : LONGINT;
  703.                                END;
  704.  
  705. (*\\\*)
  706. (*/// "Semaphore"
  707. *)
  708.  
  709.         mpSemaphoreAttemptPtr              = POINTER TO mpSemaphoreAttempt;
  710.         mpSemaphoreAttempt                 = RECORD
  711.                                              methodID  : LONGINT;
  712.                                            END;
  713.         mpSemaphoreAttemptSharedPtr        = POINTER TO mpSemaphoreAttemptShared;
  714.         mpSemaphoreAttemptShared           = RECORD
  715.                                              methodID: LONGINT;
  716.                                            END;
  717.         mpSemaphoreObtainPtr               = POINTER TO mpSemaphoreObtain;
  718.         mpSemaphoreObtain                  = RECORD
  719.                                              methodID  : LONGINT;
  720.                                            END;
  721.         mpSemaphoreObtainSharedPtr         = POINTER TO mpSemaphoreObtainShared;
  722.         mpSemaphoreObtainShared            = RECORD
  723.                                              methodID : LONGINT;
  724.                                            END;
  725.         mpSemaphoreReleasePtr              = POINTER TO mpSemaphoreRelease;
  726.         mpSemaphoreRelease                 = RECORD
  727.                                              methodID  : LONGINT;
  728.                                            END;
  729.  
  730. (*\\\*)
  731. (*/// "Dataspace"
  732. *)
  733.  
  734.         mpDataspaceAddPtr      = POINTER TO mpDataspaceAdd;
  735.         mpDataspaceAdd         = RECORD
  736.                                  methodID  : LONGINT;
  737.                                  data      : APTR;
  738.                                  len       : LONGINT;
  739.                                  dsId      : LONGINT;
  740.                                END;
  741.         mpDataspaceClearPtr    = POINTER TO mpDataspaceClear;
  742.         mpDataspaceClear       = RECORD
  743.                                  methodID  : LONGINT;
  744.                                END;
  745.         mpDataspaceMergePtr    = POINTER TO mpDataspaceMerge;
  746.         mpDataspaceMerge       = RECORD
  747.                                  methodID  : LONGINT;
  748.                                  dataspace : id.ObjectPtr ;
  749.                                END;
  750.         mpDataspaceReadIFFPtr  = POINTER TO mpDataspaceReadIFF;
  751.         mpDataspaceReadIFF     = RECORD
  752.                                  methodID  : LONGINT;
  753.                                  handle    : IFFHandlePtr;
  754.                                END;
  755.         mpDataspaceRemovePtr   = POINTER TO mpDataspaceRemove;
  756.         mpDataspaceRemove      = RECORD
  757.                                  methodID  : LONGINT;
  758.                                  dsId      : LONGINT;
  759.                                END;
  760.         mpDataspaceWriteIFFPtr = POINTER TO mpDataspaceWriteIFF;
  761.         mpDataspaceWriteIFF    = RECORD
  762.                                  methodID  : LONGINT;
  763.                                  handle    : IFFHandlePtr;
  764.                                  type      : LONGINT;
  765.                                  dsId      : LONGINT;
  766.                                END;
  767.  
  768. (*\\\*)
  769. (* /// BoopsiQuery
  770. *)
  771.         mpBoopsiQueryPtr = POINTER TO mpBoopsiQuery ;
  772.         mpBoopsiQuery    = RECORD
  773.                              methodID    : LONGCARD;
  774.                              screen      : id.ScreenPtr;   (* obsolete   *)
  775.                              flags       : LONGCARD;       (* read only  *)
  776.                              minWidth,                     (* write only *)
  777.                              minHeight,                    (* write only *)
  778.                              maxWidth,                     (* write only *)
  779.                              maxHeight,                    (* write only *)
  780.                              defWidth,                     (* write only *)
  781.                              defHeight   : LONGCARD;       (* write only *)
  782.                              renderInfo  : mRenderInfoPtr; (* read only  *)
  783.  
  784.                              (* may grow in future ... *)
  785.                            END;
  786.  
  787. CONST   mbqfHORIZ    = 1;
  788. CONST   mbqMAXMAX    = 10000;
  789. (* \\\ *)
  790.  
  791. (* (partial) instance data of notify class *)
  792.  
  793. TYPE mNotifyData = RECORD
  794.         mndGlobalInfo       : mGlobalInfoPtr;
  795.         mndUserData         : LONGINT;
  796.         priv1               : LONGINT;
  797.         priv2               : LONGINT;
  798.         priv3               : LONGINT;
  799.         priv4               : LONGINT;
  800.         priv5               : LONGINT;
  801.     END;
  802.  
  803.  
  804. (* mMinMax structure holds information about minimum, maximum
  805.    and default dimensions of an object. *)
  806.  
  807.      mMinMax = RECORD
  808.                 MinWidth   : CARDINAL;
  809.                 MinHeight  : CARDINAL;
  810.                 MaxWidth   : CARDINAL;
  811.                 MaxHeight  : CARDINAL;
  812.                 DefWidth   : CARDINAL;
  813.                 DefHeight  : CARDINAL;
  814.         END;
  815.  
  816. CONST mMAXMAX = 10000; (* use this if a dimension is not limited. *)
  817.  
  818.  
  819. (* Hook message for custom layout *)
  820.  
  821. TYPE
  822.      mLayoutPtr = POINTER TO mLayout;
  823.      mLayout = RECORD
  824.                  Width  : LONGINT;
  825.                  Height : LONGINT;
  826.                END;
  827.  
  828.      mLayoutMsgPtr = POINTER TO mLayoutMsg;
  829.      mLayoutMsg = RECORD
  830.                     lmType     : LONGINT;           (* type of message (see defines below)                      *)
  831.                     lmChildren : ed.MinListPtr;     (* list of this groups children, traverse with NextObject() *)
  832.                     lmMinMax   : mMinMax;           (* results for MUILM_MINMAX                                 *)
  833.                     lmLayout   : mLayout;           (* size (and result) for MUILM_LAYOUT                       *)
  834.                   END ;
  835.  
  836. CONST mlmMINMAX  =  1 ;    (* MUI wants you to calc your min & max sizes *)
  837. CONST mlmLAYOUT  =  2 ;    (* MUI wants you to layout your children      *)
  838. CONST mlmUNKNOWN = -1 ;    (* return this if your hook doesn't implement lm_Type *)
  839.  
  840. (* (partial) instance data of area class *)
  841.  
  842. TYPE mAreaData = RECORD
  843.                 madRenderInfo       : mRenderInfoPtr;       (* RenderInfo for this object *)
  844.                 priv6               : LONGINT;
  845.                 madFont             : gd.TextFontPtr;       (* Font *)
  846.                 madMinMax           : mMinMax;              (* min/max/default sizes *)
  847.                 madBox              : id.IBox;              (* position and dimension *)
  848.  
  849.                 madAddLeft          : SHORTCARD;            (* frame & innerspacing left offset *)
  850.                 madAddTop           : SHORTCARD;            (* frame & innerspacing top offset *)
  851.                 madSubWidth         : SHORTCARD;            (* frame & innerspacing add. width *)
  852.                 madSubHeight        : SHORTCARD;            (* frame & innerspacing add. height *)
  853.  
  854.                 madFlags            : MADFlagSet;           (* see definitions above *)
  855.  
  856.                 (* ... private data follows ... *)
  857.         END;
  858.  
  859.  
  860.  
  861. (* Global information about configuration and parent application. *)
  862.  
  863. TYPE mGlobalInfo = RECORD
  864.                         mgiConfiguration            : mConfigurationPtr;
  865.                         mgiApplicationObject        : id.ObjectPtr;
  866.                         (* ... private data follows ... *)
  867.                      END;
  868.  
  869. (* MUI's draw pens *)
  870.  
  871. CONST mpenShine      = 0 ;
  872. CONST mpenHalfshine  = 1 ;
  873. CONST mpenBackground = 2 ;
  874. CONST mpenHalfshadow = 3 ;
  875. CONST mpenShadow     = 4 ;
  876. CONST mpenText       = 5 ;
  877. CONST mpenFill       = 6 ;
  878. CONST mpenMark       = 7 ;
  879. CONST mpenCount      = 8 ;
  880.  
  881. (* Mask for pens from MUI_ObtainPen() *)
  882.  
  883. CONST muipenMask = 0000FFFFH ;
  884.  
  885. PROCEDURE muiPen(pen : LONGCARD) : LONGCARD;
  886.  
  887. (* Information on display environment *)
  888.  
  889. TYPE mRenderInfo = RECORD
  890.                             mriWindowObject        : id.ObjectPtr;   (* valid between MUIMSetup/MUIMCleanup *)
  891.  
  892.                             mriScreen              : id.ScreenPtr;   (* valid between MUIMSetup/MUIMCleanup *)
  893.                             mriDrawInfo            : id.DrawInfoPtr; (* valid between MUIMSetup/MUIMCleanup *)
  894.                             mriPens                : WORDPtr;        (* valid between MUIMSetup/MUIMCleanup *)
  895.                             mriWindow              : id.WindowPtr;   (* valid between MUIMShow/MUIMHide *)
  896.                             mriRastPort            : gd.RastPortPtr; (* valid between MUIMShow/MUIMHide *)
  897.  
  898.                             mriFlags               : LONGINT;        (* valid between MUIM_Setup/MUIM_Cleanup *)
  899.  
  900.                         (* ... private data follows ... *)
  901.                      END;
  902.  
  903. TYPE  MRIFlags = (
  904.                   (*
  905.                   ** If mri_Flags & MUIMRI_RECTFILL, RectFill() is quicker
  906.                   ** than Move()/Draw() for horizontal or vertical lines.
  907.                   ** on the current display.
  908.                   *)
  909.  
  910.                   rectFill,
  911.  
  912.                   (*
  913.                   ** If mri_Flags & MUIMRI_TRUECOLOR, display environment is a
  914.                   ** cybergraphics emulated hicolor or true color display with
  915.                   ** an unlimited number of pens available. Obtain/ReleasePen()s
  916.                   ** as many as you want... :-)
  917.                   *)
  918.  
  919.                   trueColor,
  920.  
  921.                   (*
  922.                   ** If mri_Flags & MUIMRI_THINFRAMES, MUI uses thin frames
  923.                   ** (1:1) apsect ratio instead of standard 2:1 frames.
  924.                   *)
  925.  
  926.                   thinFrames,
  927.  
  928.                   (*
  929.                   ** If mri_Flags & MUIMRI_REFRESHMODE, MUI is currently
  930.                   ** refreshing a WFLG_SIMPLEREFRESH window and is between
  931.                   ** a BeginRefresh()/EndRefresh() pair.
  932.                   *)
  933.  
  934.                   refreshMode,
  935.  
  936.                               mp4,  mp5,  mp6,  mp7,  mp8,  mp9,  mp10, mp11,
  937.                   mp12, mp13, mp14, mp15, mp16, mp17, mp18, mp19, mp20, mp21,
  938.                   mp22, mp23, mp24, mp25, mp26, mp27, mp28, mp29, mp30, mp31
  939.                   (* rest is private, but must be specified to get a LONGSET *)
  940.                  );
  941.  
  942.       MRIFlagSet = SET OF MRIFlags;
  943.     
  944.  
  945. (*
  946. ** some procedures to get some information about our object 
  947. *)
  948.  
  949. PROCEDURE muiNotifyData(obj : APTR) : mNotifyDataPtr;
  950. PROCEDURE muiAreaData(obj : APTR) : mAreaDataPtr;
  951. PROCEDURE muiGlobalInfo(obj : APTR) : mGlobalInfoPtr;
  952. PROCEDURE muiUserData(obj : APTR) : ADDRESS ;
  953. PROCEDURE muiRenderInfo(obj : APTR) : mRenderInfoPtr;
  954.  
  955. (*
  956. ** some more specialized functions to retain information about special
  957. ** object-data like rastport, window, etc.
  958. **
  959. ** NOTE: These macros may only be used in custom classes and are
  960. ** only valid if your class is inbetween the specified methods!
  961. *)
  962.  
  963. PROCEDURE OBJ_app(obj : APTR) : id.ObjectPtr;       (* valid between MUIM_Setup/Cleanup *)
  964. PROCEDURE OBJ_win(obj : APTR) : id.ObjectPtr;       (* valid between MUIM_Setup/Cleanup *)
  965. PROCEDURE OBJ_dri(obj : APTR) : id.DrawInfoPtr;     (* valid between MUIM_Setup/Cleanup *)
  966. PROCEDURE OBJ_screen(obj : APTR) : id.ScreenPtr;    (* valid between MUIM_Setup/Cleanup *)
  967. PROCEDURE OBJ_pens(obj : APTR) : WORDPtr ;          (* valid between MUIM_Setup/Cleanup *)
  968. PROCEDURE OBJ_window(obj : APTR) : id.WindowPtr;    (* valid between MUIM_Show/Hide *)
  969. PROCEDURE OBJ_rp(obj : APTR) : gd.RastPortPtr;      (* valid between MUIM_Show/Hide *)
  970. PROCEDURE OBJ_left(obj : APTR) : INTEGER;           (* valid during MUIM_Draw *)
  971. PROCEDURE OBJ_top(obj : APTR) : INTEGER;            (* valid during MUIM_Draw *)
  972. PROCEDURE OBJ_width(obj : APTR) : INTEGER;          (* valid during MUIM_Draw *)
  973. PROCEDURE OBJ_height(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  974. PROCEDURE OBJ_right(obj : APTR) : INTEGER;          (* valid during MUIM_Draw *)
  975. PROCEDURE OBJ_bottom(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  976. PROCEDURE OBJ_addleft(obj : APTR) : INTEGER;        (* valid during MUIM_Draw *)
  977. PROCEDURE OBJ_addtop(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  978. PROCEDURE OBJ_subwidth(obj : APTR) : INTEGER;       (* valid during MUIM_Draw *)
  979. PROCEDURE OBJ_subheight(obj : APTR) : INTEGER;      (* valid during MUIM_Draw *)
  980. PROCEDURE OBJ_mleft(obj : APTR) : INTEGER;          (* valid during MUIM_Draw *)
  981. PROCEDURE OBJ_mtop(obj : APTR) : INTEGER;           (* valid during MUIM_Draw *)
  982. PROCEDURE OBJ_mwidth(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  983. PROCEDURE OBJ_mheight(obj : APTR) : INTEGER;        (* valid during MUIM_Draw *)
  984. PROCEDURE OBJ_mright(obj : APTR) : INTEGER;         (* valid during MUIM_Draw *)
  985. PROCEDURE OBJ_mbottom(obj : APTR) : INTEGER;        (* valid during MUIM_Draw *)
  986. PROCEDURE OBJ_font(obj : APTR) : gd.TextFontPtr;    (* valid between MUIM_Setup/Cleanup *)
  987. PROCEDURE OBJ_minwidth(obj : APTR) : CARDINAL;      (* valid between MUIM_Show/Hide *)
  988. PROCEDURE OBJ_minheight(obj : APTR) : CARDINAL;     (* valid between MUIM_Show/Hide *)
  989. PROCEDURE OBJ_maxwidth(obj : APTR) : CARDINAL;      (* valid between MUIM_Show/Hide *)
  990. PROCEDURE OBJ_maxheight(obj : APTR) : CARDINAL;     (* valid between MUIM_Show/Hide *)
  991. PROCEDURE OBJ_defwidth(obj : APTR) : CARDINAL;      (* valid between MUIM_Show/Hide *)
  992. PROCEDURE OBJ_defheight(obj : APTR) : CARDINAL;     (* valid between MUIM_Show/Hide *)
  993. PROCEDURE OBJ_flags(obj : APTR) : MADFlagSet;
  994.  
  995.    
  996. (* User configurable keyboard events coming with MUIMHandleInput *)
  997.  
  998. CONST MUIKEYRELEASE     = -2; (* not a real key, faked when MUIKEYPRESS is released *)
  999. CONST MUIKEYNONE        = -1;
  1000. CONST MUIKEYPRESS       =  0;
  1001. CONST MUIKEYTOGGLE      =  1;
  1002. CONST MUIKEYUP          =  2;
  1003. CONST MUIKEYDOWN        =  3;
  1004. CONST MUIKEYPAGEUP      =  4;
  1005. CONST MUIKEYPAGEDOWN    =  5;
  1006. CONST MUIKEYTOP         =  6;
  1007. CONST MUIKEYBOTTOM      =  7;
  1008. CONST MUIKEYLEFT        =  8;
  1009. CONST MUIKEYRIGHT       =  9;
  1010. CONST MUIKEYWORDLEFT    = 10;
  1011. CONST MUIKEYWORDRIGHT   = 11;
  1012. CONST MUIKEYLINESTART   = 12;
  1013. CONST MUIKEYLINEEND     = 13;
  1014. CONST MUIKEYGADGETNEXT  = 14;
  1015. CONST MUIKEYGADGETPREV  = 15;
  1016. CONST MUIKEYGADGETOFF   = 16;
  1017. CONST MUIKEYWINDOWCLOSE = 17;
  1018. CONST MUIKEYWINDOWNEXT  = 18;
  1019. CONST MUIKEYWINDOWPREV  = 19;
  1020. CONST MUIKEYHELP        = 20;
  1021. CONST MUIKEYPOPUP       = 21;
  1022. CONST MUIKEYCOUNT       = 22; (* private *)
  1023.  
  1024. (*
  1025. ** now something about dispatchers.
  1026. ** if you have written your dispatcher make sure it has the format of
  1027. ** PROCEDURE Dispatcher(cl : IClassPtr; obj : ADDRESS; msg : ADDRESS) : ADDRESS
  1028. ** (like DispatcherDef)
  1029. ** Then call in your main routine the procedure MakeDispatcher like this :
  1030. ** MakeDispatcher(Dispatcher, MyClass),
  1031. ** where MyClass is the initialized IClassPtr of your new class.
  1032. ** This function will then set up your dispatcher with a little stub which
  1033. ** will restore A4 for your (will mean, your programm will be pure, if you
  1034. ** do all right)
  1035. *)
  1036.  
  1037. (* here the definition of a dispatcher! *)
  1038.  
  1039. TYPE    DispatcherDef = PROCEDURE ( (* class   *) id.IClassPtr,
  1040.                                     (* object  *) ADDRESS,
  1041.                                     (* message *) ADDRESS) : ADDRESS;
  1042.  
  1043. (* this is the template for moCreateCustomClass() ! *)
  1044.  
  1045. TYPE    ClassDispatcher = PROCEDURE ( (* class   *) id.IClassPtr{R.A0},
  1046.                                       (* object  *) ADDRESS{R.A2},
  1047.                                       (* message *) ADDRESS{R.A1}) : ADDRESS;
  1048.  
  1049.  
  1050. (* now the procedure MakeDispatcher : *)
  1051.  
  1052. PROCEDURE MakeDispatcher(entry:DispatcherDef; VAR myclass : id.IClassPtr);
  1053.  
  1054.  
  1055.  
  1056. (* 
  1057. ** at last a little procedure to fill in the values in the MinMax-Record.
  1058. ** You can call it inside an AskMinMax-Method, because it is ever the same...
  1059. *)
  1060.  
  1061. PROCEDURE FillMinMaxInfo (msg : mpAskMinMaxPtr; MinWidth   : CARDINAL;
  1062.                                                 DefWidth   : CARDINAL;
  1063.                                                 MaxWidth   : CARDINAL;
  1064.                                                 MinHeight  : CARDINAL;
  1065.                                                 DefHeight  : CARDINAL;
  1066.                                                 MaxHeight  : CARDINAL);
  1067.  
  1068.  
  1069. (*
  1070. ** 2 useful procedures for testing if some coordinates are inside your object
  1071. ** (converted from the ones in class3.c. So look there how to use... )
  1072. *)
  1073.  
  1074. (* this will test if x is between a and b *)
  1075.  
  1076. PROCEDURE OBJ_between(a,x,b : INTEGER) : BOOLEAN;
  1077.  
  1078. (* this will test, if the position (x, y) is inside the Object obj *)
  1079.  
  1080. PROCEDURE OBJ_isInObject(x, y : INTEGER; obj : id.ObjectPtr) : BOOLEAN;
  1081.  
  1082.  
  1083.  
  1084. (* MUI_CustomClass returned by MUI_CreateCustomClass() *)                                    
  1085.  
  1086. TYPE
  1087.     mCustomClass = RECORD
  1088.                     userData            : APTR;            (* use for whatever you want *)
  1089.                     utilityBase         : ed.LibraryPtr;   (* MUI has opened these libraries *)
  1090.                     dosBase             : ed.LibraryPtr;   (* for you automatically. You can *)
  1091.                     gfxBase             : ed.LibraryPtr;   (* use them or decide to open     *)
  1092.                     intuitionBase       : ed.LibraryPtr;   (* your libraries yourself.       *)
  1093.                                                                                              
  1094.                     super               : id.IClassPtr;    (* pointer to super class   *)
  1095.                     class               : id.IClassPtr;    (* pointer to the new class *)
  1096.  
  1097.                     (* ... private data follows ... *)
  1098.  
  1099.                   END;
  1100.                                                                                              
  1101.  
  1102. END MuiClasses.
  1103.